C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE AUTOMAT
OBJECT MODULE PLACED IN Automat.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Automat.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <string.h>
   3          //******************************************* PROMENLJIVE ************************************************
             -*********************//
   4          //VREME
   5          short xdata msec;
   6          char xdata sec;
   7          char xdata min;
   8          char xdata sati;
   9          bit vreme_podeseno;
  10          char code nepodeseno_vreme[8]={'S','E','T',' ','T','I','M','E'}; 
  11          
  12          
  13          //promenljiva za TIMER1
  14          bit oneMS=0;
  15          
  16          //PORTOVI
  17          sbit LE_DISPL = P1^0;
  18          sbit LE_START = P1^1;
  19          sbit LE_MONEY_OUT = P1^2;
  20          sbit SEL_moneyD0_KD0 = P1^3;
  21          
  22          sbit moneyD0_KD0 = P1^4;
  23          sbit moneyD1_KD1 = P1^5;
  24          sbit moneyD2_KD2 = P1^6;
  25          sbit KD3 = P1^7;
  26          
  27          //ZARADA
  28          short xdata ukupno_zaradjeno;
  29          
  30          //STATUSI
  31          bit kupljen_proizvod;
  32          bit pokrenut_motor;
  33          
  34          //VEZANO ZA VRACANJE KUSURA
  35          char novcanica;
  36          bit nema_novcanice200 = 0;
  37          bit nema_novcanice100 = 0;
  38          bit nema_novcanice50 = 0;
  39          bit nema_novcanice20 = 0;
  40          bit nema_novcanice10 = 0;
  41          bit nema_novcanica = 0;
  42          bit novcanica_izbacena = 0;
  43          
  44          //VEZANO ZA PROIZVODE
  45          char xdata nazivi_proizvoda[100][16];
  46          char xdata cene_proizvoda[100];
  47          short xdata zarade_proizvoda[100];
  48          
  49          //VEZANO ZA UNOS SA TASTATURE
  50          char uneto_cifara;
  51          char cifra1;
  52          char cifra2;
  53          char code tasteri[13]={'0','3','6','9','1','4','7','o','2','5','8','c','k'};   // o - enter  c - del k - k
             -usur
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 2   

  54          char data taster;
  55          
  56          //VEANO ZA DISPLEJ
  57          char trenutni_ispis[8];
  58          char trenutno_vreme[8];
  59          char trenutna_poruka[8];
  60          char prikazuj_vreme_ispis_poruku;
  61          char trenutni_karakter;
  62          char trenutni_simbol;
  63          
  64          
  65          
  66          //VEZANO ZA UNOS NOVCA
  67          short suma;                                     //trenutna suma nova koja sa ispisuje na ukranu 
  68          
  69          //KOPIJA MASKE ZA PREKIDE U MEMORIJI
  70          char MASKA;
  71          
  72          //VEZANO ZA ISPIS NA DISPLEJU
  73          char kodovi[8];
  74          char brojac;
  75          
  76          
  77          //vezano za stanja za serijski port
  78          char trenutno_stanje;
  79          char broj_proizvoda;
  80          char broj_poruke;
  81          char Lpromet;
  82          char Hpromet;
  83          
  84          
  85          //****************************************** KONSTANTE ***************************************************
             -*******************//
  86          
  87          
  88          #define BR0H 0xFC;      // "-922" da se broji svakih 922x12/11.059 = 1.0 ms
  89          #define BR0L 0x66;              // -992 = 1111 1100 0110 0110b = FC66
  90          #define POSTAVI_CENU 0x01
  91          #define POSTAVI_NAZIV_CENU 0x02
  92          #define PROCITAJ_PROMET_P 0x03
  93          #define RESETUJ_PROMET_P 0x04
  94          #define PROCITAJ_PROMET_U 0x05
  95          #define RESETUJ_PROMET_U 0x06
  96          #define PROMET_P 0x07
  97          #define PROMET_U 0x08
  98          #define PODESAVANJE_VREMENA 0x09
  99          #define STARTNO_STANJE 0x0A
 100          
 101          
 102          
 103          //******************************************************** GLAVNI PROGRAM ********************************
             -********************//
 104          
 105          void main ( void ) using 0 {
 106   1      
 107   1              vreme_podeseno = 0;                             //da li je vreme podeseno ili ne
 108   1              ukupno_zaradjeno = 0;                   //suma novca koja je zaradjena
 109   1              uneto_cifara = 0;                               //broj cifara koje su unete sa tastature
 110   1              prikazuj_vreme_ispis_poruku = 0;                                //da li da timer ispisuje vreme za displej
 111   1              trenutno_stanje = STARTNO_STANJE;
 112   1      
 113   1              P2=0x00;                                                //pocetne vrednosti za portove
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 3   

 114   1              P0=0x00;
 115   1      
 116   1              LE_START = 1;
 117   1              LE_START = 0;
 118   1      
 119   1              LE_MONEY_OUT = 1;
 120   1              LE_MONEY_OUT = 0;
 121   1              
 122   1              TH0 = BR0H;//brojac 0
 123   1              TL0 = BR0L;
 124   1      
 125   1              TH1 = 0xFC;//brojac 1
 126   1              TL1 = 0x66;
 127   1              
 128   1              TCON = 0x11;// 0001 0001 - brojac 0 se startuje(01) , brojac 1 ne(00)
 129   1              TMOD = 0x05;// 0001 0001 - brojac 0 16-bit , brojac 1 16-bit
 130   1      
 131   1              SCON = 0x90; // 1001 000 -> mode 2, radi na osnovu oscilatora, postavljen je bit kojim se aktivira prijem
 132   1              PCON = 0x00; // najvisi bit PCON odredjuje da li se radi clk/32 ili clk/64, ovde je 64
 133   1      
 134   1              IE = 0xF6;      //zabranjuje se prekid sa tastature i sa brojaca 1ms od trenutka startovaja 
 135   1      
 136   1              while(1){}
 137   1      }
 138          
 139          void pokreni_timer (void) {
 140   1              TH1 = BR0H; // setuju se startne vrednosti brojaca, za brojanje 1 ms
 141   1              TL1 = BR0L;
 142   1              TR1 = 1;
 143   1      }
 144          
 145          void cekaj_1msec(){
 146   1              MASKA = IE;
 147   1      
 148   1              IE = 0xE8;//dozvoli prekid od T1
 149   1              pokreni_timer();
 150   1              while(oneMS!=1){}//cekaj 1ms
 151   1              oneMS=0;
 152   1              TR1 = 0;//stopiraj T1
 153   1      
 154   1              IE = MASKA;
 155   1      }
 156          
 157          
 158          void ucitaj_taster(void){
 159   1              SEL_moneyD0_KD0 = 0;                                                                    // 1-selektuje aparat za pare, 0-selektuje tastaturu
 160   1              taster = P1 & 0x0F;                                                                             // procitaj vrednost sa porta 
 161   1              taster = tasteri[taster];                                                               //prevedi vrednost tastera u odgovarajuci char
 162   1      
 163   1              if(uneto_cifara  == 0) cifra1 = taster;
 164   1              else cifra2 = taster;
 165   1      }
 166          
 167          void formiraj_ispis(void){
 168   1              if(uneto_cifara ==2 ){
 169   2                      trenutni_ispis[0] = cifra1;
 170   2                      trenutni_ispis[1] = cifra2;
 171   2              }
 172   1              else if (uneto_cifara == 1){
 173   2                      trenutni_ispis[0] = cifra1;
 174   2                      trenutni_ispis[1] = 32;  // kod praznog displeja
 175   2              }
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 4   

 176   1              else{
 177   2                      trenutni_ispis[0] = 32;
 178   2                      trenutni_ispis[1] = 32;
 179   2              }
 180   1      
 181   1              trenutni_ispis[7]=suma%10;
 182   1              trenutni_ispis[6]=((suma-trenutni_ispis[7])%100)/10;
 183   1              trenutni_ispis[5]=((suma-trenutni_ispis[7]-trenutni_ispis[6])%1000)/100;
 184   1              trenutni_ispis[4]=(suma-trenutni_ispis[7]-trenutni_ispis[6]-trenutni_ispis[5])/1000;
 185   1      
 186   1              if(trenutni_ispis[4]==0){
 187   2                      trenutni_ispis[4]=32;
 188   2                      if(trenutni_ispis[5]==0){
 189   3                              trenutni_ispis[5]=32;
 190   3                      }
 191   2              }       
 192   1      }
 193          
 194          void formiraj_vreme(){
 195   1              if(vreme_podeseno == 1){
 196   2                      trenutno_vreme[1]=sati%10;      
 197   2                      trenutno_vreme[0]=(sati-trenutno_vreme[1])/10;
 198   2                      trenutno_vreme[2]=58;
 199   2                      trenutno_vreme[4]=min%10;       
 200   2                      trenutno_vreme[3]=(min-trenutno_vreme[4])/10;
 201   2                      trenutno_vreme[5]=58;
 202   2                      trenutno_vreme[7]=sec%10;       
 203   2                      trenutno_vreme[6]=(sec-trenutno_vreme[7])/10;
 204   2              }
 205   1              else{ 
 206   2              trenutno_vreme[0] = nepodeseno_vreme[0];
 207   2              trenutno_vreme[1] = nepodeseno_vreme[1];
 208   2              trenutno_vreme[2] = nepodeseno_vreme[2];
 209   2              trenutno_vreme[3] = nepodeseno_vreme[3];
 210   2              trenutno_vreme[4] = nepodeseno_vreme[4];
 211   2              trenutno_vreme[5] = nepodeseno_vreme[5];
 212   2              trenutno_vreme[6] = nepodeseno_vreme[6];
 213   2              trenutno_vreme[7] = nepodeseno_vreme[7];
 214   2              }
 215   1      }
 216          
 217          void izbaci_novcanicu(char novcanica){
 218   1              char temp = novcanica * 4;
 219   1              P2 = temp + 2;                                                                                  //novcanica + write
 220   1              LE_MONEY_OUT = 1;
 221   1              cekaj_1msec();
 222   1              LE_MONEY_OUT = 0;
 223   1      }
 224          
 225          
 226          void procitaj_vrednost_iz_automata(void){
 227   1              P2 = 1;                                                                                                 //read
 228   1              LE_MONEY_OUT = 1;
 229   1              cekaj_1msec();
 230   1              LE_MONEY_OUT = 0;
 231   1              SEL_moneyD0_KD0 = 1;
 232   1              if(P1^4==1 && P1^5==0 && P1^6==0){suma += 10;}
 233   1              else if(P1^4==0 && P1^5==1 && P1^6==0){suma += 20;}
 234   1              else if(P1^4==1 && P1^5==1 && P1^6==0){suma += 50;}
 235   1              else if(P1^4==0 && P1^5==0 && P1^6==1){suma += 100;}
 236   1              else if(P1^4==0 && P1^5==0 && P1^6==1){suma += 200;}
 237   1      
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 5   

 238   1              else if(P1^4==0 && P1^5==0 && P1^6==0){nema_novcanica = 1;}
 239   1              else if(P1^4==1 && P1^5==1 && P1^6==1){novcanica_izbacena = 1;}
 240   1      
 241   1              P2 = 0;                                                                                                 //ukida se signal read
 242   1              LE_MONEY_OUT = 1;
 243   1              LE_MONEY_OUT = 0;
 244   1      }
 245          
 246          void ispisi_poruku_na_displeju(char poruka[]){
 247   1              char temp = prikazuj_vreme_ispis_poruku;
 248   1              char temp_sec;
 249   1              char i = 0;
 250   1              char j = 0;
 251   1              char temp_poruka[8]={' ',' ',' ',' ',' ',' ',' ',' '};
 252   1              char len = sizeof(poruka);
 253   1              prikazuj_vreme_ispis_poruku = 2;
 254   1      
 255   1              for(i=0;i<len+9;i++){   
 256   2                      trenutna_poruka[0] = temp_poruka[0];
 257   2                      trenutna_poruka[1] = temp_poruka[1];
 258   2                      trenutna_poruka[2] = temp_poruka[2];
 259   2                      trenutna_poruka[3] = temp_poruka[3];
 260   2                      trenutna_poruka[4] = temp_poruka[4];
 261   2                      trenutna_poruka[5] = temp_poruka[5];
 262   2                      trenutna_poruka[6] = temp_poruka[6];
 263   2                      trenutna_poruka[7] = temp_poruka[7];
 264   2                      temp_sec=sec;while(temp_sec==sec){}
 265   2                      //shiftovanje poruke
 266   2                      for(j=0;j<7;j++){
 267   3                              temp_poruka[j] = temp_poruka[j+1];
 268   3                      }
 269   2                      temp_poruka[7]=(i<len)? poruka[i]:' ';  
 270   2              }
 271   1      
 272   1              prikazuj_vreme_ispis_poruku = temp;
 273   1      }
 274          
 275          //------------------------------------------- VRACANJE KUSURA -------------------------------------------
 276          void vrati_kusur(){
 277   1              while(1){
 278   2                      if(suma>=200 && nema_novcanice200 == 0){
 279   3                              novcanica = 200;
 280   3                              izbaci_novcanicu(novcanica);
 281   3                              cekaj_1msec();//cekaj 1ms
 282   3                              procitaj_vrednost_iz_automata();
 283   3                              if(nema_novcanica == 1)nema_novcanice200 = 1;
 284   3                              nema_novcanica = 0;
 285   3                      }
 286   2                      else if(suma>=100 && nema_novcanice100 == 0){
 287   3                              novcanica = 100;
 288   3                              izbaci_novcanicu(novcanica);
 289   3                              cekaj_1msec();//cekaj 1ms
 290   3                              procitaj_vrednost_iz_automata();
 291   3                              if(nema_novcanica == 1)nema_novcanice100 = 1;
 292   3                              nema_novcanica = 0;
 293   3                      }
 294   2                      else if(suma>=50 && nema_novcanice50 == 0){
 295   3                              novcanica = 50;
 296   3                              izbaci_novcanicu(novcanica);
 297   3                              cekaj_1msec();//cekaj 1ms
 298   3                              procitaj_vrednost_iz_automata();
 299   3                              if(nema_novcanica == 1)nema_novcanice50 = 1;
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 6   

 300   3                              nema_novcanica = 0;
 301   3                      }
 302   2                      else if(suma>=20 && nema_novcanice20 == 0){
 303   3                              novcanica = 20;
 304   3                              izbaci_novcanicu(novcanica);
 305   3                              cekaj_1msec();//cekaj 1ms
 306   3                              procitaj_vrednost_iz_automata();
 307   3                              if(nema_novcanica == 1)nema_novcanice20 = 1;
 308   3                              nema_novcanica = 0;
 309   3                      }
 310   2                      else if(suma>=10 && nema_novcanice10 == 0){
 311   3                              novcanica = 10;
 312   3                              izbaci_novcanicu(novcanica);    
 313   3                              cekaj_1msec();//cekaj 1ms
 314   3                              procitaj_vrednost_iz_automata();
 315   3                              if(nema_novcanica == 1){
 316   4                                      ispisi_poruku_na_displeju("NESTALO NOVCANICA");//posalji na disp nestalo novcanica                      
 317   4                                      break;
 318   4                              }
 319   3                      }
 320   2                      else if(suma==0)
 321   2                              ispisi_poruku_na_displeju("HVALA STO STE KORISTILI NAS AUTOMAT");
 322   2                              break;          
 323   2              }
 324   1              nema_novcanice200=0;nema_novcanice100=0;nema_novcanice50=0;nema_novcanice20=0;nema_novcanice10=0;//vrati 
             -indikatore na 0
 325   1      }
 326           
 327          void prikazi_poruku_o_proizvodu(){
 328   1              if(cene_proizvoda[cifra1 * 10 + cifra2] < suma) ispisi_poruku_na_displeju(strcat(nazivi_proizvoda[cifra1 
             -* 10 + cifra2] ," ENTER = yes/DEL = no"));    
 329   1              else ispisi_poruku_na_displeju("NISTE UNELI DOVOLJNO NOVCA");
 330   1      
 331   1      }
 332          
 333          void na_pocetno_stanje(){
 334   1              kupljen_proizvod = 0;
 335   1              uneto_cifara = 0;
 336   1              prikazuj_vreme_ispis_poruku = 0;
 337   1              nema_novcanica = 0;
 338   1              trenutno_stanje = STARTNO_STANJE;
 339   1              IE = 0xF6;
 340   1      }
 341          
 342          //***************************************************************** PREIDNE RUTINE ***********************
             -*************************************
 343          
 344          void timer0_1ms_prekid(void) large interrupt 1{  // prekid od tajmera 0 - brojaca vremena
 345   1              MASKA = IE;                                     //kopira IE u memoriju
 346   1              IE = 0x00;                                      //zabranjuje sve prekide
 347   1              if(++msec==1000){
 348   2                      msec=0;
 349   2                      sec++;
 350   2                      if(sec==60){
 351   3                              sec=0;
 352   3                              min++;
 353   3                              if(min==60){
 354   4                                      min=0;
 355   4                                      sati++;
 356   4                                      if(sati==24){
 357   5                                              sati=0;
 358   5                                      }
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 7   

 359   4                              }
 360   3                      }
 361   2              }
 362   1              formiraj_vreme();
 363   1              
 364   1              trenutni_karakter = (trenutni_karakter + 1)%8;
 365   1              P0 = trenutni_karakter;
 366   1              if (prikazuj_vreme_ispis_poruku == 0)P2 = trenutno_vreme[trenutni_karakter];
 367   1          else if (prikazuj_vreme_ispis_poruku == 1)P2 = trenutni_ispis[trenutni_karakter];
 368   1              else P2 = trenutna_poruka[trenutni_karakter];
 369   1              P2 = trenutno_vreme[trenutni_karakter];
 370   1              LE_DISPL = 1;
 371   1              LE_DISPL = 0;   
 372   1      
 373   1              pokreni_timer();
 374   1              IE = MASKA;                             //kopira zapamcenu masku u IE
 375   1      }
 376          
 377          void timer1_1ms_posle_startovanja(void) large interrupt 3{
 378   1              MASKA = IE;                                     //kopira IE u memoriju
 379   1              IE = 0x00;                                      //zabranjuje sve prekide
 380   1              oneMS=1;
 381   1              IE = MASKA;     
 382   1      }
 383          
 384          void extern1_automat_spirala(void) large interrupt 2{
 385   1              MASKA = IE;                                     //kopira IE u memoriju
 386   1              IE = 0xE6;                                      //zabranjuje prekide od tastature
 387   1              procitaj_vrednost_iz_automata();
 388   1              if (pokrenut_motor == 1){
 389   2                      kupljen_proizvod = 1;
 390   2                      pokrenut_motor = 0;
 391   2                      P0 = 0;
 392   2                      LE_START = '1';
 393   2                      LE_START = '0';
 394   2              }
 395   1              IE = MASKA;                                                                             
 396   1      }
 397          
 398          void extern0_tastatura(void) large reentrant interrupt 0{
 399   1              MASKA = IE;                                                                                             //kopira IE u memoriju
 400   1              IE = 0xE6;                                                                                              //zabranjuje prekide od tastature
 401   1              ucitaj_taster();
 402   1      
 403   1              switch(taster){
 404   2      
 405   2                      case 'c':                                                                       // pritisnut je taster "del"
 406   2                              if(uneto_cifara > 0){
 407   3                                      if(uneto_cifara == 1){cifra1 = ' ';}
 408   3                                      if(uneto_cifara == 2){cifra2 = ' ';}
 409   3                                      uneto_cifara--;
 410   3                                      IE = MASKA;
 411   3                              }               
 412   2                      break;
 413   2      
 414   2                      case 'o':                                                                                                               // pritisnut je taster "enter"
 415   2                              if(uneto_cifara == 2){
 416   3                                      if(cene_proizvoda[cifra1 * 10 + cifra2] < suma){
 417   4                                              char temp_sec;
 418   4                                              P0 = cifra1 * 10 + cifra2;
 419   4                                              LE_START = '1';
 420   4                                              LE_START = '0';
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 8   

 421   4                                              pokrenut_motor = 1;
 422   4                                              temp_sec = sec + 6;while(temp_sec>=sec){}
 423   4                                              if(kupljen_proizvod){
 424   5                                                      suma-=cene_proizvoda[cifra1 * 10 + cifra2];
 425   5                                                      zarade_proizvoda[cifra1 * 10 + cifra2]+= cene_proizvoda[cifra1 * 10 + cifra2];
 426   5                                                      if(suma == 0){
 427   6                                                              ispisi_poruku_na_displeju("HVALA STO STE KORISTILI NAS AUTOMAT");
 428   6                                                              na_pocetno_stanje();
 429   6                                                      }
 430   5                                                      else {
 431   6                                                              ispisi_poruku_na_displeju("PRITISNITE TASTER ZA KUSUR");
 432   6                                                              IE = MASKA;
 433   6                                                      }
 434   5                                              }
 435   4                                              else {
 436   5                                                      ispisi_poruku_na_displeju("NESTALO IZABERITE DRUGI PROIZVOD");
 437   5                                                      IE = MASKA;
 438   5                                              }
 439   4                                      }
 440   3                              }
 441   2                      break;
 442   2      
 443   2                      case 'k':                                   // pritisnut taster "kusur"
 444   2                              if (kupljen_proizvod && (suma <= 200)){ 
 445   3                                      vrati_kusur();
 446   3                                      na_pocetno_stanje();
 447   3                              }       
 448   2                      break;
 449   2                      default :                                                                       // pritisnut je taster 0..9
 450   2                                      ucitaj_taster();
 451   2                                      formiraj_ispis();
 452   2                                      uneto_cifara += 1;
 453   2                                      if(uneto_cifara == 1)prikazuj_vreme_ispis_poruku = 1;
 454   2                                      else prikazi_poruku_o_proizvodu();
 455   2                                      IE = MASKA;
 456   2                      break;          
 457   2              }
 458   1      }
 459          
 460          void serijski_port(void) large interrupt 4{
 461   1              char poruka;
 462   1              //RECEIVE
 463   1              if (RI == 1) {
 464   2                      poruka = SBUF;
 465   2                      if(broj_poruke == 0){
 466   3                              //RESETUJ UKUPAN PROMET
 467   3                              if(poruka == RESETUJ_PROMET_U){
 468   4                                      char i;
 469   4                                      for(i=0; i<100; i++)zarade_proizvoda[i]=0;
 470   4                              }
 471   3                              //PROCITAJ UKUPAN PPROMET
 472   3                              else if(poruka == PROCITAJ_PROMET_U){
 473   4                                      char i=0;
 474   4                                      short promet_u=0;
 475   4                                      for(i=0;i<100;i++)promet_u += zarade_proizvoda[i];
 476   4                                      Lpromet = promet_u & 0x00FF;
 477   4                                      Hpromet = promet_u >> 8;
 478   4                                      SBUF=Lpromet;
 479   4                              }
 480   3                              broj_poruke++;
 481   3                              trenutno_stanje = poruka;
 482   3                      }
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 9   

 483   2                      else{
 484   3                              switch(trenutno_stanje){
 485   4                                      //POSTAVI CENU I NAZIV ZA PROIZVOD
 486   4                                      case POSTAVI_NAZIV_CENU:{
 487   5                                              if(broj_poruke==1){
 488   6                                                      broj_proizvoda = poruka;
 489   6                                                      broj_poruke++;
 490   6                                              }else if(broj_poruke>=2 && broj_poruke<18){
 491   6                                                      nazivi_proizvoda[broj_proizvoda][broj_poruke-2]=poruka;
 492   6                                                      broj_poruke++;
 493   6                                              }else if (broj_poruke == 18){
 494   6                                                      cene_proizvoda[broj_proizvoda]=poruka;
 495   6                                                      broj_poruke++;
 496   6                                              }
 497   5                                              else {
 498   6                                                      short temp = poruka<<8;
 499   6                                                      cene_proizvoda[broj_proizvoda] += temp;
 500   6                                                      trenutno_stanje = STARTNO_STANJE;
 501   6                                                      broj_poruke = 0;
 502   6                                              }
 503   5                                      }break;
 504   4                                      //PROMENI CENU PROIZVODU
 505   4                                      case POSTAVI_CENU:{
 506   5                                              if(broj_poruke==1){
 507   6                                                      broj_proizvoda = poruka;
 508   6                                                      broj_poruke++;
 509   6                                              }else{
 510   6                                                      cene_proizvoda[broj_proizvoda]=poruka;
 511   6                                                      trenutno_stanje = STARTNO_STANJE;
 512   6                                                      broj_poruke = 0;
 513   6                                              }
 514   5                                      }break;
 515   4                                      //RESETUJ ZARADU ZA PROIZVOD
 516   4                                      case RESETUJ_PROMET_P:{
 517   5                                              if(broj_poruke == 1){
 518   6                                                      broj_proizvoda = poruka;
 519   6                                                      cene_proizvoda[broj_proizvoda] = 0;
 520   6                                                      trenutno_stanje = STARTNO_STANJE;
 521   6                                                      broj_poruke = 0;
 522   6                                               }
 523   5                                      }break;
 524   4                                      //SET TIME
 525   4                                      case PODESAVANJE_VREMENA:{
 526   5                                              msec = 0;
 527   5                                              if(broj_poruke == 1){
 528   6                                                      sec = poruka;
 529   6                                                      broj_poruke++;
 530   6                                               }
 531   5                                               else if(broj_poruke==2){
 532   6                                                      min = poruka;
 533   6                                                      broj_poruke++;
 534   6                                               }
 535   5                                               else{
 536   6                                                      sati = poruka;
 537   6                                                      trenutno_stanje = STARTNO_STANJE;
 538   6                                                      vreme_podeseno = 1;
 539   6                                                      broj_poruke=0;
 540   6                                               }
 541   5                                      }break;
 542   4                                      //PROCITAJ PROMET ZA PROIZVOD
 543   4                                      case PROCITAJ_PROMET_P:{
 544   5                                              Lpromet = zarade_proizvoda[poruka] & 0x00FF;
C51 COMPILER V7.00  AUTOMAT                                                                02/17/2010 13:07:02 PAGE 10  

 545   5                                              Hpromet = zarade_proizvoda[poruka] >> 8;
 546   5                                              SBUF=Lpromet;
 547   5                                      }break;                         
 548   4                              }
 549   3                      }
 550   2                      RI=0;
 551   2              }
 552   1              //TRANSMIT
 553   1              else if (TI == 1) {
 554   2                      TI=0;           
 555   2                      switch(trenutno_stanje){
 556   3                              //PROCITAJ PROMET ZA JEDAN PROIZVOD/SVE PROIZVODE
 557   3                              case PROCITAJ_PROMET_U:{
 558   4                                      SBUF=Hpromet;
 559   4                                      trenutno_stanje = STARTNO_STANJE;
 560   4                                      broj_poruke = 0;
 561   4                              }break;
 562   3                              case PROCITAJ_PROMET_P:{
 563   4                                      SBUF=Hpromet;
 564   4                                      trenutno_stanje = STARTNO_STANJE;
 565   4                                      broj_poruke = 0;
 566   4                              }break;
 567   3                      }
 568   2              }
 569   1      }
 570          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2350    ----
   CONSTANT SIZE    =    192    ----
   XDATA SIZE       =   1907       3
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     49      15
   IDATA SIZE       =   ----    ----
   BIT SIZE         =     11    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
